The use of portable electronic devices has increased dramatically in recent years, and many such devices now support the capability to capture, transmit and display electronic image data. In addition, personal computers, laptop computers, game consoles, etc. are also used extensively for exchanging and displaying image data. In some cases, the image data relates to a “digital picture” that is captured using an image sensor, such as for instance a charge-coupled device (CCD) or a complementary metal-oxide-semiconductor (CMOS) based image sensor. In other cases, the image data relates to a picture, sketch, symbol, handwriting or printing that is “hand-drawn” by a user, using for instance a stylus and tablet, a mouse or a touch screen. Of course, the image data in some cases relates to typed text. In general, the image data forms a two-dimensional image when displayed via a display portion of an electronic display device.
It is often the case that the image data is private or confidential in nature. In such cases it is desirable to encode the image data prior to transmission or storage thereof. Image encoding schemes that are based on cellular automaton rules are particularly attractive, since the decoded image is identical to the original image and there is no loss of resolution. Briefly, a cellular automaton (CA) is a discrete dynamical system formed by a finite or infinite number of identical objects called cells, which are endowed with a state that changes in discrete time steps according to a deterministic rule. In general, the evolution of a CA considers that the state of a specified cell at time t+1 depends on the state of its neighbourhood at time t, where the neighbourhood is a selection of cells relative to the specified cell. However, this evolution can also be considered to depend on the states of other cells at times t−1, t−2, etc. Every cell has the same rule for updating, based on the values in this neighbourhood. Each time the rules are applied to the whole system a new generation—iteration—is created.
Considering now a specific example, in which the image data is to be encoded for transmission via a network, the following steps typically are performed. The image data is processed through a predetermined number of iterations using a predetermined CA rule and a secret key. Each iteration results in new data, which is then processed further during a next iteration. The encoded image data is obtained at the end of the final iteration, and is transmitted subsequently via a communications network to a receiver. At the receiver end the encoded image data is processed through a same predetermined number of iterations, using the inverse of the predetermined CA rule with knowledge of the secret key. The image data, in decoded form, is obtained after the final iteration and the image data is then displayed using, for instance, a display portion of an electronic display device that is associated with the receiver.
Many applications, particularly messaging applications, provide enhanced enjoyment for the user when unusual visual effects are employed. The use of CA based encoding/decoding of image data provides an opportunity to add such an unusual effect. In particular, the iterative processing of the encoded image data using the CA rule and secret key produces data that, when displayed to the user, appears as a series of obfuscated images that coalesce eventually into the plain image. In other words, the received image emerges gradually from chaos rather than being displayed to the user all at once. Unfortunately, given knowledge of the CA rule, the encoded data and the decoded data, it may be possible for an unauthorized entity to use the series of obfuscated images—iterations or generations—to determine the secret key. As such, displaying the series of obfuscated images renders the encoding/decoding scheme much less secure.
It would therefore be beneficial to provide a method that overcomes at least some of the above mentioned limitations.